﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Foundation;
using System.ComponentModel;

namespace Business {
    public interface IDataHandler : INotifyPropertyChanged {
        List<Category> Categories { get;  }
        List<Track> UntaggedTracks { get; }

        /// <summary>
        /// Die aktuelle SoundSuite, welche bearbeitet und abgespielt werden kann
        /// </summary>
        Guid CurrentSoundSuite { get; set; }

        void SaveNewCategory(string name);
        List<Track> TracksInCategory(Category cat);

        List<SoundSuite> SoundSuites { get; }


        void CreateNewSoundSuite(string name);

        void DeleteSuite(SoundSuite soundSuite);


        /// <summary>
        /// Gibt die EffectGroups zur aktuellen SoundSuite zurück
        /// </summary>
        /// <returns></returns>
        object[] GetCurrentEffectGroups();

        /// <summary>
        /// Gibt die SoundSuite Representation der aktuellen SoundSuite zurück
        /// </summary>
        /// <returns></returns>
        SoundSuite GetCurrentSoundSuite();

        /// <summary>
        /// Fügt eine neue EffektGroup zur aktuell gewählten SoundSuite hinzu
        /// </summary>
        /// <param name="effektGroup"></param>
        void AddEffektGroupToCurrentSoundSuite(EffektGroup effektGroup);
    }
}
